﻿Imports DTO
Imports DAO


Public Class CDocGiaBUS
    Public Function LoadDanhSachDocGia() As List(Of CDocGiaDTO)
        Return New CDocGiaDAO().LoadDanhSachDocGia()
    End Function

    ' Kiểm tra nghiệp vụ: Tuổi độc giả từ 18 đến 55.
    Public Function KiemTraTuoi(ByVal _docgia As CDocGiaDTO) As Boolean
        Return New CDocGiaDAO().KiemTraTuoiHopLe(_docgia) = 1
    End Function

    'Kiểm tra nghiệp vụ: thẻ có giá trị sáu tháng:
    Public Function KiemTraGiaTriThe(ByVal _docgia As CDocGiaDTO) As Boolean
        Dim gtt As Integer = New CDocGiaDAO().LayGiaTriThe()
        If (_docgia.NgayHetHan.Month - _docgia.NgayLapThe.Month <> gtt) Then
            Return False
        End If
        Return True
    End Function

    ' Hàm lấy giá trị thẻ:
    Public Function LayGiaTriThe() As Integer
        Return New CDocGiaDAO().LayGiaTriThe()
    End Function


    'Kiểm tra nghiệp vụ: người lập thẻ độc giả phải là nhân viên thuộc bộ phận thủ thư
    ' Ở tính năng này chỉ kiểm tra cho đúng thủ tục thôi, chứ thực tế giao diện thì không cần kiểm tra vì là combobox load theo dk
    Public Function KiemTraNguoiLapThe(ByVal _nhanvien As CNhanVienDTO) As Boolean
        Return New CNhanVienDAO().KiemTraNV_BPThuThu(_nhanvien) = 1
    End Function

    Public Function ThemDocGia(ByRef _docgia As CDocGiaDTO) As Boolean ' Nếu muốn xử lý phần kiểm tra nhân viên, thì ở đây truyền vào nhân viên
        ' Kiểm tra nghiệp vụ:
        ' Tuổi từ 18 đến 55
        If (KiemTraTuoi(_docgia) = False) Then
            Return False
        End If

        ' Thẻ có giá trị 6 tháng.
        'If (KiemTraGiaTriThe(_docgia) = False) Then
        '    Return False
        'End If
        ' Tuy nhiên do thiết kế của giao diện hổ trợ người dùng đở phải nhập đi nhập lai khi sai
        ' Thì ta sẽ cộng cho người dùng khi biết ngày lập thẻ luôn, không cần phải kiểm tra tính năng này.

        ' Người lập thẻ độc giả phải là nhân viên thuộc bộ phận thủ thư.
        'If(KiemTraNguoiLapThe(_nhanvien) = false) Then
        '   return false
        ' End if


        Return New CDocGiaDAO().ThemDocGia(_docgia) > 0
    End Function

    '  Lấy tên độc giả khi biết mã độc giả:
    Public Function LayTenDocGiaKhiBietMa(ByVal ma As Integer) As String
        Return New CDocGiaDAO().LayTenDocGiaKhiBietMa(ma)
    End Function

    Public Function LayDocgiaKhiBietMaCoTheHetHan(ByVal ma As Integer) As CDocGiaDTO
        Return New CDocGiaDAO().LayDocgiaKhiBietMaCoTheHetHan(ma)
    End Function

    Public Function LayThongTinDocGiaKhiBietMa(ByVal _ma As Integer) As CDocGiaDTO
        Return New CDocGiaDAO().LayThongTinDocGiaKhiBietMa(_ma)
    End Function

    Public Function CapNhatDocGia(ByVal _docgia As CDocGiaDTO) As Boolean
        If (KiemTraTuoi(_docgia) = False) Then
            Return False
        End If
        Return New CDocGiaDAO().CapNhatDocGia(_docgia) = 0
    End Function

    Public Function CapNhatNgayHetHan(ByVal docgia As CDocGiaDTO) As Boolean
        Return New CDocGiaDAO().CapNhatNgayHetHan(docgia) > 0
    End Function

    Public Function DanhSachDocGiaNoTienPhat() As List(Of CDocGiaDTO)
        Return New CDocGiaDAO().DanhSachDocGiaNoTienPhat()
    End Function


    Public Function TraCuu(ByVal madocgia As Integer) As CDocGiaDTO
        Return New CDocGiaDAO().TraCuu(madocgia)
    End Function


    Public Function TraCuuKhiKhongBietMa(ByVal docgiacrt As CDocGiaCrt) As List(Of CDocGiaDTO)
        Return New CDocGiaDAO().TraCuuKhongCoMaDocGia(docgiacrt)
    End Function

End Class
